

const isProduction = (process.env.NODE_ENV === 'production')
const cdn = {
  css:[
    "https://unpkg.com/quill@1.3.4/dist/quill.core.css",
    "https://unpkg.com/quill@1.3.4/dist/quill.snow.css",
    "https://unpkg.com/quill@1.3.4/dist/quill.bubble.css"
  ],
  js:[
    "https://unpkg.com/vue@2.6.11/dist/vue.min.js",
    "https://unpkg.com/vue-router@3.2.0/dist/vue-router.min.js",
    "https://unpkg.com/axios@0.21.1/dist/axios.min.js",
    "https://unpkg.com/echarts@5.0.2/dist/echarts.min.js",
    // vue-quill-editor和其依赖项quill
    "https://unpkg.com/quill@1.3.4/dist/quill.min.js",
    "https://unpkg.com/vue-quill-editor@3.0.6/dist/vue-quill-editor.js",
  ]
}

module.exports = {
  // eslint-loader 是否在保存的时候检查
  lintOnSave: false,

  // 链式配置webpack
  chainWebpack: config => {
    if(isProduction){ //生产环境下
      config.plugin('html').tap(args => {
        // 把cdn对象挂到htmlWebpackPlugin.options上，可以在html中访问到
        args[0].cdn = cdn
        return args
      })
      // 启用gzip
      const CompressionPlugin = require('compression-webpack-plugin')
      config.plugin('compressionPlugin').use(new CompressionPlugin({
        test: /\.js$|\.css$|\.html$/, // 匹配文件名
        threshold: 10240,           // 对超过10k的数据压缩
        deleteOriginalAssets: false // 不删除源文件
      }))
    }
  },

  // 对象配置webpack
  configureWebpack: config => {
      if(isProduction){
        // 打包时取消import加载资源
        config.externals = {
          'vue' : 'Vue',
          'vue-router': 'VueRouter',
          'axios': 'axios',
          'element-ui' : 'ElementUI',
          'echarts': 'echarts',
          'vue-quill-editor' : 'VueQuillEditor'
        }
      }
  },

  // webpack-dev-server 相关配置
  devServer: {
    open: true, // 编译完成是否打开网页
    host: "0.0.0.0", // 指定使用地址，默认localhost,0.0.0.0代表可以被外界访问
    port: 8080, // 访问端口
    https: false, // 编译失败时刷新页面
    inline: true, //实时刷新
    hot: true, // 开启热加载
    hotOnly: false,

    proxy: {
      "/api": {
        target: "http://timemeetyou.com:8889/api/private/v1", // 你请求的第三方接口
        changeOrigin: true, // 在本地会创建一个虚拟服务端，然后发送请求的数据，并同时接收请求的数据
        pathRewrite: {
          // 路径重写，
          "^/api": "" // 替换target中的请求地址
        }
      }
    }
  },

  publicPath: '/shop-admin/',
  productionSourceMap: false
};
